package com.irdstudio.efp.esb.service.facade.sed.cfca;

import java.util.Map;

import com.irdstudio.basic.framework.core.exception.ESBException;
import com.irdstudio.efp.esb.service.bo.req.dzqz.ReqElectronicSignature3203Bean;
import com.irdstudio.efp.esb.service.bo.req.dzqz.ReqElectronicSignatureDL01Bean;
import com.irdstudio.efp.esb.service.bo.req.sed.cfca.ReqElectronicSignature3207Bean;
import com.irdstudio.efp.esb.service.bo.req.sed.cfca.ReqSedCfcaOpenAccountBean;
import com.irdstudio.efp.esb.service.bo.resp.dzqz.RspElectronicSignature3203Bean;
import com.irdstudio.efp.esb.service.bo.resp.dzqz.RspElectronicSignatureDL01Bean;
import com.irdstudio.efp.esb.service.bo.resp.sed.cfca.RespElectronicSignature3207Bean;
import com.irdstudio.efp.esb.service.bo.resp.sed.cfca.RespSedCfcaOpenAccountBean;

/**
* 普税贷产品对税e贷产品的此部分代码做了复用
* 说明：为了保证功能的复用性、提升开发的工作效率，对该代码进行了复用
* 评估是否会影响线上功能：否
* 评估时间：2020/5/25
* 处理方案：保留复用
*/
/**
 * 税E贷CFCA服务（开户、签章、下载）<br/>
 * @author  zhoucs1
 * @version 1.0
 * @since   2019年4月22日 下午5:26:14
 */
public interface SedCfcaService {
	/**
	 * 开户<br/>
	 * @author zhoucs1
	 * @since  2019年4月22日 下午5:53:58
	 * @param reqSedCfcaBean
	 * @return
	 */
	RespSedCfcaOpenAccountBean openAccount(ReqSedCfcaOpenAccountBean req) throws ESBException;
	/**
	 * 上传合同签署（可先不签署印章）<br/>
	 * @author zhoucs1
	 * @since  2019年4月22日 下午5:53:58
	 * @param reqSedCfcaBean
	 * @return
	 */
	RspElectronicSignature3203Bean signContract(ReqElectronicSignature3203Bean req3203Bean) throws ESBException;
	/**
	 * 关键字签署（可用于单独签署印章）<br/>
	 * @author zhoucs1
	 * @since  2019年4月22日 下午5:53:58
	 * @param reqSedCfcaBean
	 * @return 
	 */
	RespElectronicSignature3207Bean signSeal(ReqElectronicSignature3207Bean req3207Bean) throws ESBException;
	/**
	 * 合同下载<br/>
	 * @author zhoucs1
	 * @since  2019年4月22日 下午5:53:58
	 * @param reqSedCfcaBean
	 * @return
	 */
	RspElectronicSignatureDL01Bean downloadContract(ReqElectronicSignatureDL01Bean reqCADL01Bean) throws ESBException;
	
	/**
	 * 利用本地合同模板生成合同文件
	 * @author zhoucs1
	 * @since  2019年5月7日 上午9:07:22
	 * @param contractType
	 * @param contractMap
	 * @return 
	 * @throws Exception
	 */
	String createLocalContract(String contractType, Map<String, String> contractMap) throws Exception;

	String fillPdfContent(String contractType, Map<String, String> contractMap) throws Exception;
}
